<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="txrNM" id="txrNM"><span data-lake-id="u3cd99532" id="u3cd99532">典型回答</span></h1>
  <p data-lake-id="u900f60fc" id="u900f60fc"><br></p>
  <p data-lake-id="ud958f402" id="ud958f402"><span data-lake-id="ued12c37c" id="ued12c37c">和InnoDB最大的不同，MyISAM是采用了一种索引和数据分离的存储方式，也就是说，MyISAM中索引文件和数据文件是独立的。</span></p>
  <p data-lake-id="ubc6500b1" id="ubc6500b1"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1697716353442-c70b80e4-be96-427a-b7d3-5ece0bdb58ef.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_73%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="ue39f3236" id="ue39f3236"><span data-lake-id="u51f1505f" id="u51f1505f">​</span><br></p>
  <p data-lake-id="u78d67928" id="u78d67928"><span data-lake-id="ube302fe2" id="ube302fe2">因为文件独立，所以在MyISAM的索引树中，叶子节点上存储的并不是数据，而是数据所在的地址。所以，MyISAM 存储引擎实际上不支持聚簇索引的概念。在 MyISAM 中，所有索引都是非聚簇索引。</span></p>
  <p data-lake-id="uc4ea5b46" id="uc4ea5b46"><span data-lake-id="ue9c18b4e" id="ue9c18b4e">​</span><br></p>
  <p data-lake-id="u9992c2b9" id="u9992c2b9"><br></p>
  <p data-lake-id="ue8191326" id="ue8191326"><span data-lake-id="u81dab89f" id="u81dab89f">也就是说，在MyISAM中，根据索引查询的过程中，必然需要先查到数据所在的地址，然后再查询真正的数据，那么就需要有两次查询的过程。而在InnoDB中，如果基于聚簇索引查询，则不需要回表，因为叶子节点上就已经包含数据的内容了。</span></p>
  <p data-lake-id="u8a6136fe" id="u8a6136fe"><span data-lake-id="ub6f5f1f3" id="ub6f5f1f3">​</span><br></p>
  <p data-lake-id="u5ccb2230" id="u5ccb2230"><span data-lake-id="u299e0ecc" id="u299e0ecc">因为MyISAM是先出的，正式因为存在这个问题，所以后来的InnoDB 引入了聚簇索引的概念提高了数据检索的效率，特别是对于主键检索。</span></p>
 </body>
</html>